﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace PedraPapelTesoura
{
    class ControleDisparo
    {
        private Texture2D[] TamborRodando = new Texture2D[12];
        private Vector2 PosTamborRodando;

        private Random posicao = new Random();
        private int ContadorTamborRodando;
        private int ContadorVezesRodar;
        private bool PararTambor = false;
        int traje = 0;
        int vezes = 10;

        private int PosicaoDisparo;
        private int PosicaoBala;
        private bool Acertou;
        private bool Errou;

        public ControleDisparo(Texture2D tamborRodando01,
                               Texture2D tamborRodando02,
                               Texture2D tamborRodando03,
                               Texture2D tamborRodando04,
                               Texture2D tamborRodando05,
                               Texture2D tamborRodando06,
                               Texture2D tamborRodando07,
                               Texture2D tamborRodando08,
                               Texture2D tamborRodando09,
                               Texture2D tamborRodando10,
                               Texture2D tamborRodando11,
                               Texture2D tamborRodando12,
                               Vector2 postamborRodando)
        {
            this.TamborRodando[0] = tamborRodando01;
            this.TamborRodando[1] = tamborRodando02;
            this.TamborRodando[2] = tamborRodando03;
            this.TamborRodando[3] = tamborRodando04;
            this.TamborRodando[4] = tamborRodando05;
            this.TamborRodando[5] = tamborRodando06;
            this.TamborRodando[6] = tamborRodando07;
            this.TamborRodando[7] = tamborRodando08;
            this.TamborRodando[8] = tamborRodando09;
            this.TamborRodando[9] = tamborRodando10;
            this.TamborRodando[10] = tamborRodando11;
            this.TamborRodando[11] = tamborRodando12;
            this.PosTamborRodando = postamborRodando;
        }

        public Vector2 postamborRodando
        { get { return PosTamborRodando; } }
        public bool acertou
        { get { return Acertou; } }
        public bool errou
        { get { return Errou; } }
        public bool pararTambor
        { get { return PararTambor; } }
               
        public Texture2D Roleta_RodarTambor()
        {
            Texture2D tambor = null;

            if (!PararTambor && ContadorTamborRodando == 0)
            {
                PosicaoBala = posicao.Next(1, 3);
                ContadorVezesRodar = posicao.Next(2, 5);                
                PararTambor = true;                
            }           
            
            if (PararTambor)
            {
                ContadorTamborRodando++;
                if (ContadorTamborRodando == vezes * (traje + 1))
                {
                    traje++;
                }

                if (ContadorTamborRodando == (vezes * 12))
                {
                    ContadorTamborRodando = 0;
                    ContadorVezesRodar--;
                    traje = 0;
                    
                    if (ContadorVezesRodar == 1)
                        vezes = 5;
                    else if (ContadorVezesRodar == 2)
                        vezes = 7;
                    else if (ContadorVezesRodar == 3)
                        vezes = 9;
                    if (ContadorVezesRodar == 0)
                    {
                        PararTambor = false;
                        traje = 0;
                    }
                }

                tambor = TamborRodando[traje];
            }
            return tambor;
        }

        public void efetuarDisparo()
        {
            
            PosicaoDisparo = posicao.Next(1, 3);
            Acertou = false;
            Errou = false;

            if (PosicaoDisparo == PosicaoBala)
                Acertou = true;
            else
                Errou = true;
        }
    }
}
